Integrated circuits are designed today with computers using a computer program known as an integrated circuit design tool. With this tool, a circuit designer enters geometrical shapes representing elements of an integrated circuit design into a computer and manipulates the size and location of the shapes to produce a simulated layout of the circuit. The geometrical shapes correspond to circuit elements such as transistors or their parts, resistors and capacitors and appear on a computer display screen. These shapes represent a physical layer of material in an integrated circuit such as metal, insulation or polysilicon layers, with each material typically shown in a different color. From this simulated layout, the design tool generates data for producing photolithographic masks that are then used for fabricating the integrated circuit.
Some integrated circuit design apparatus include a library of basic circuit elements with which a circuit design may be constructed such as transistors, contacts, wires, etc. Rather than having to draw geometrical shapes of a circuit element from scratch, the user may obtain it from the library. Typically a user selects a circuit element from a library menu with a pointing device, and in response one or more geometrical shapes corresponding to the element appear in a workspace on screen. The user may then modify the size or shape of the corresponding geometrical shape as desired.
The libraries included with integrated circuit design apparatus are often quite limited. However, most design apparatus provide a means for users to create circuit elements and add them to the library. The means for creating elements is an user-added, or extensible, element "engine." Using a programming language understandable by the element engine, a user writes short computer programs called "generators" that define the behavior of an extensible element. These programs include device parameters (i.e., attributes) such as location, orientation, etc., so that variations of a basic extensible element may be created by varying the parameters while replicating the common part of the program. When the user selects an extensible element for inclusion in a circuit design, the engine interprets the element's program and provides the element to the layout.
Prior design apparatus with extensible element engines have had their drawbacks, primarily in the speed with which they provide the extensible elements and the appearance of the elements on screen. Each time an extensible element is added to a design, the program representing the element must be executed. Compared to built-in elements, providing extensible elements to a design takes much longer. If there are numerous extensible elements in a design, the delay is significant. And prior design apparatus have separated extensible elements from built-in elements in their human interface, requiring a user to learn two sets of commands to access both types of elements.
Accordingly, an object of the invention is to provide an integrated circuit design method and apparatus with extensible elements which behave as built-in circuit elements. Another object of the invention is to provide such method and apparatus in which the extensible elements are provided as quickly as built-in elements. Yet another object of the invention is to provide extensible elements that are indistinguishable from built-in elements by the user.